<!doctype html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

<title>Adopting Git/GitHub within Teaching</title>

	<link rel="stylesheet" href="dist/reset.css">
	<link rel="stylesheet" href="css/latex.css">
	<link rel="stylesheet" href="dist/reveal.css">
	<link rel="stylesheet" href="dist/theme/black.css">
	<link rel="stylesheet" href="css/fontawesome-free-6.4.0-web/css/all.min.css"   crossorigin="anonymous" referrerpolicy="no-referrer"/>
	<!-- Theme used for syntax highlighted code -->
	<link rel="stylesheet" href="plugin/highlight/monokai.css">

	<link rel="stylesheet" href="css/cdn.jsdelivr.net_npm_bootstrap-icons@1.10.3_font_bootstrap-icons.css">
	<script src="js/code.iconify.design_iconify-icon_1.0.2_iconify-icon.min.js"></script>

	<link rel="icon" href="img/Androidpirate.png" type="image/x-icon">


	<!-- https://stackoverflow.com/questions/47057398/reveal-js-title-with-capitalized-words-but-not-in-uppercase -->
	<style>
    .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5 {
		text-transform: none;
	}
	</style>
	<style type="text/css">
		p { text-align: left; }
	</style>

</head>

<body>
<div class="reveal">
<div class="slides">


<section data-markdown data-background-color="rgb(22, 4, 9)">
<textarea data-template>

## Adopting Git/GitHub within Teaching: A Survey

- [Click to download the paper](pdf/AdoptingGitGitHubWithinTeaching.pdf)
- Paper published by Prof. Richard Glassey from KTH
- ACM Global Computing Education Conference 2019
- Master students will publish papers on this topic as well
- I will share my own experience
- GitHub Classroom live demo, with Li Jiajun
- [Source code for the HTML slides](https://gitee.com/lundechen/lunde.top/blob/master/adopting-git-GitHub-within-teaching.html)

---

## Abstract (1/2)

- The adoption and use of Git and GitHub within computer science education is growing in popularity.
- The motivation for this shift is strong: it combines a robust system for managing student coursework, sophisticated collaboration and communication tools for students and teaching staff, and an authentic experience of an important software engineering skill.

---

## Abstract (2/2)

- This work aims to provide an overview of tools to help solve the challenge of adoption of Git/GitHub, identify the commonalities and differences, and develop a framework for comparison to assist teachers when looking for solutions for their own courses.

---

## Introduction (1/4)

- Version control systems (VCS) have become a vital component of managing resources and teamwork in modern software engineering
- A defacto skill for all developers.


---

## Introduction (2/4)

- This importance has motivated the adoption of such systems into teaching, either as a topic, or a means to manage the materials of a project-related course
- Use of VCS has spread further, for managing assignments, assessment and feedback within entry level CS1 courses and beyond

---

## Introduction (3/4)
- Barriers to adoption include 
	- (1) concerns about privacy and access control between students' work, 
	- (2) additional time it takes to investigate how VCS might work within a course, 
	- (3) complexity of using a system that is not designed to support teachers, 
	- (4) the uncertainty of how best to use VCS effectively for both students and teachers.
---

## Introduction (4/4)

- teachers have attempted to reduce these barriers by developing tools that integrate the common teaching tasks of distributing assignments and projects, managing and automating assessment, and providing feedback to students on their efforts.
- this paper provides a brief literature survey on those tools

---

## Related work (1/13)
- May 2003, University of Toronto
- teachers adopted Concurrent Versions System (CVS) to manage the shared resources that students developed together for their coursework submissions
- Besides simplifying the coordination aspects between students (who had used email to share code previously), it was also reported as an effective way to teach version control principles in real time as the students used the tools on their own work.
---
## Related work (2/13)
- Teaching staff also benefited by being able to more easily share starter code in an immediately usable form (not zipped, archived or hosted on a web page), manage a student body spread over multiple campuses, and deliver feedback to students directly within the repository.
---
## Related work (3/13)
- Fall of 2005, Rose-Hulman Institute of Technology (RHIT)
- Concurrent Versions System (CVS)  simplified the interaction with students, and allowed the direct and timely delivery of feedback, which was much faster than previous methods. 
- From the teachers’ perspective, this method also allowed them to spot-check students’ work without having to explicitly request a submission, check the balance between group projects in terms of interaction counts, and detect when students were effectively (or not) distributing their work over time, and procrastinating before the deadline. 
---
## Related work (4/13)
- University of West Georgia, CS1 course in Fall 2009
- Mercurial usable with entry level students in a CS1 course
- administrative burden was also reduced when using DVCS, there was less chance of repositories being damaged by students, and there was better control over administrative access control to avoid students seeing other student’s work.
---
## Related work (5/13)
- Git was release in 2005
- 2013, using Git with CS1 students
- Administrative benefits of using Git in coordination with hosting services that were cloud-based, rather than teachers needing to overcome the complexities of setting up local servers.
- automatically triggering evaluation whenever a student pushed their work

---
## Related work (6/13)
- In [15], one of the first to report within the literature on the availability of unlimited free repositories available via GitHub Inc. for teachers, noted the key benefits as being: (1) secure submission, (2) underwriting provenance and derivation of submitted work, (3) better source file organisation, (4) integrated Issue Tracking, and (5) exposure to standard industry practice.

---
## Related work (7/13)
- [12] reported some of the underlying challenges that students faced.students 
	- may have had a badly formed mental model of version control, confusing branches with files and folders, 
	- faced challenges with the terminology like ```origin master```, 
	- missed out on an authenticexperience of VCS usage due to the changes required to manage distribution, assessment and feedback, which deviated from a regular software engineering project
---
## Related work (8/13)
-  [9] reports that whilst the teachers were surprised by how overwhelming the student enthusiasm is for adopting VCS, they also discovered that they lacked understanding about the system or having confidence in their ability to use it effectively beyond the course.


---
## Related work (9/13)
- In [5], the benefits that students themselves reported were: (1) gaining and demonstrating industry relevant skills and practices, (2) enabling cross-team collaboration and contributions, (3) encouraging student contributions to course content, (4) breaking down the walled garden, and (5) version controlled assignments. 

---
## Related work (10/13)

- More recently, attention has turned towards the value that can be derived from analysing the data that is generated when using a VCS. In particular, the GitHub API provides a wealth of information that can be used to generate input for learning analytics and educational data mining, as examples from software engineering projects have demonstrated [4, 8, 14].


---
## Related work (11/13)

- In [13], the authors derived a range of indicators that could be used to more objectively and systematically determine the project quality and student behaviour in terms of individual and team contributions. 

---
## Related work (12/13)


- A further example of possible indicators that teachers can use to improve their own courses was presented in [6], where the feedback captured in the issue tracker could be used to better understand individual assignments as well as differences in teaching assistant behaviour.

---
## Related work (13/13)
- Despite the growth of interest in Git/GitHub by the academic community, one pressing issue is the technical barrier that must be overcome to make the most effective use of the technology. 
- various teachers and GitHub Inc. themselves have developed tools to support basic and advanced usage in terms of distribution of assignments, assessment and feedback.


---

## Suvery of open source solutions (tools)
- ACAD, Command Line
- **GitHub Classroom**, Web Interface
- GHClass, Command Line
- Repomate, Command Line
- Rhomboid, Command Line
- Submit50, Simplified Command Line
- Teacher’s Pet, Command Line
- Virtual Classroom, Command Line

---
## Technical Aspects
- GitHub Classroom simplifies the effort in creating repositories and distributing to students by making use of a web interface.
- Submit50 takes a different approach and simplifies the command line effort for students, by creating an abstraction over the regular git commands require to add, commit and push into a single submit command.
---
## Pedagogical Aspects

### Grouping
- Git/GitHub was not designed as a learning management system (LMS), but this has not stopped inspired teachers from finding ways to retrofit important aspects that a traditional LMS would support. 
- Key amongst these is how to arrange students and their assessments, answering the question of whether this should be solo work or team work

---
## Pedagogical Aspects

### Grouping
- Whilst students could create their own private repositories, this does not help as most often each tool is trying to help a teacher distribute an assignment to students, and relieve them of the burden of creating a repository correctly that can then be accessed and assessed by a teacher at a later date.

---
## Pedagogical Aspects

### Grouping
- The common solution adopted by the tools considered here is to create an organisation on GitHub to establish ownership rights of all repositories, then, to prevent students from seeing other students work, create teams that only contain a single student.
---
## Pedagogical Aspects

### Grouping
- GitHub Classroom differed from GHClass in that students were expected to find their way to the correct team via the web interface. 
- GHClass notes in their documentation that most educators would prefer to have this control themselves and create predefined teams rather than rely on students to get it right
---
## Pedagogical Aspects

### Distribution Model

- One of the driving motivations to create these tools in the first place is to generate and distribute assignments to a class of students. - As classes can become large, achieving this manually is not realistically possible.
- taking as input a roster of students, and then as output, assignments that students can work on within the Git/GitHub environment.

---
## Pedagogical Aspects

### Distribution Model

- one repository per student per assignment (ORpSpA)
- one branch per problem (OBpP)
- My Question: One Repo for all assignments, within one branch?

---
## Pedagogical Aspects

- one repository per student per assignment (ORpSpA)
	- the student will see a repository in their GitHub account that is named with the following pattern, or similar derivation: <pre>[student-name]-[assignment-number]</pre>
---
## Pedagogical Aspects

- one branch per problem (OBpP)
	- the student has one repository, but many branches within that repository to store the solutions for their assignments.
	- Whilst this is slightly more complex to implement, requiring a deeper understanding of Git branching, it does create some nice advantages.

---
## Pedagogical Aspects

- one branch per problem (OBpP)
	- the student is not overwhelmed by having many repositories
	- teaching staff are not overwhelmed by having N students × M assignments to keep track of
	- students are exposed to branching early (although perhaps not quite how it is supposed to be used) and get to make use of pull requests to signal that they are ready to have this particular branch/problem assessed.
---
## Pedagogical Aspects
- My Question: One Repo for all assignments, within one branch?

---
## Pedagogical Aspects

### Assessment

- batch-cloning student repositories to a local file-system in order to conduct assessment.
- clone all repositories for a group of students, locate and run all unit tests in each repository, and generate a report of the outcome 

---
## Pedagogical Aspects

### Assessment

-  Check50  allows both student and teacher to run assessment operations automatically upon work that has been committed to a repository.
- This creates a more symmetric level of access and heightened interactivity with the system for students
---
## Pedagogical Aspects

### Assessment
- Rhomboid
	- entirely integrated into Git/GitHub
	- once teaching assistants have graded students, the students can then update their own repository and see their results. 
	- this builds up over all assignments and can deliver a grade profile and final result for the course.

---
## Pedagogical Aspects

### Assessment
- Repomate and Virtual Classroom both support peer assessment
	- This takes advantage of the underlying team model for organising repositories for individuals, then this allows additional students to be added at a later date, with the intention that they will perform a peer review of the individual work.
---
## Pedagogical Aspects

### Feedback

- As GitHub has good support for communication and coordination between developers in terms of the issue tracker and the pull request mechanisms, a rich opportunity for student feedback presents itself.



---
## Pedagogical Aspects

### Feedback

- both GitHub Classroom and GHClass connect with continuous integration (CI) services in order to generate feedback for student assignments whenever they push their attempts. 
- GitHub Classroom has an agreement with Travis CI that allows educational users to have their repositories connected to a CI Server
- The typical use case for a teacher would be to have a unit test suite setup that the student must pass before receiving their final grade.




---

## My own experience while teaching C++/Python

- [Click here](chuangxin.html)
	- https://github.com/reveurmichael/cppGithubTests
	- https://github.com/reveurmichael/final_easy_problems_correct_answer
	- https://github.com/kashiluntan/assignment-week-2-xuruiye
	- https://classroom.github.com/classrooms/105918354-kashiluntan
---


## Thank you &nbsp;  <i class="fa-solid fa-handshake"></i>


</textarea>
</section>
</div>
</div>

<script src="dist/reveal.js"></script>
<script src="plugin/markdown/markdown.js"></script>
<script src="plugin/highlight/highlight.js"></script>
<script src="plugin/title-footer/title-footer.js"></script>
<script src="plugin/zoom/zoom.js"></script>
<script>
	// More info about initialization & config:
	// - https://revealjs.com/initialization/
	// - https://revealjs.com/config/
	Reveal.initialize({
		hash: true,
		slideNumber: true,
		history: true,
		loop: false,
		embedded: false,
		mouseWheel: false,
		hideCursorTime: 3000,

		// Learn about plugins: https://revealjs.com/plugins/
		plugins: [ RevealMarkdown, RevealHighlight, RevealZoom ],
		dependencies: [
		]
	});

	Reveal.configure({
		keyboard: {
			27: () => { console.log('esc') }, // do something custom when ESC is pressed
			13: 'next' // go to the next slide when the ENTER key is pressed
		}
	});

</script>
</body>


</html>
